﻿using System;
using System.Text;
using System.Drawing;
using System.Buffers;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;

public static partial class glDRIVE
{
    /*
    函数 gl.ldle
    对称方程组的分解法
    参数 a: a[n][n]存放系数矩阵，返回时将被破坏。
    参数 n: n方程组的阶数。
    参数 m: m方程组右端常数向量的组数。
    参数 c: c[n][m]存放方程组右端m组常数向量。返回m组解向量。
    返回值 若<0则表示系数矩阵非对称；若=0则表示失败；若>0则表示正常。
    */

    public static string drive_ldle()
    {
        int i;
        double[,] a = new double[5, 5]{
            {5.0,7.0,6.0,5.0,1.0},
            {7.0,10.0,8.0,7.0,2.0},
            {6.0,8.0,10.0,9.0,3.0},
            {5.0,7.0,9.0,10.0,4.0},
            {1.0,2.0,3.0,4.0,5.0}
        };
        double[,] c = new double[5, 2]{
            {24.0,96.0},
            {34.0,136.0},
            {36.0,144.0},
            {35.0,140.0},
            {15.0,60.0}
        };

        string rs = "";
        rs += gl.html_table("Mat A:", a);
        rs += gl.html_table("Mat C:", c);

        i = gl.ldle(a, 5, 2, c);
        if (i <= 0) return "error: 0";

        rs += gl.html_table("Mat C:", c);
        return rs;
    }
}
